package Reflect.demo02;

/*
    获取一个类的Class对象的6中方法
 */
public class Test04 {
    public static void main(String[] args) throws Exception{
        //1.通过Class.forName()来获取，多用于读取配置文件获取全类名之后，来加载该类
        Class<?> aClass1 = Class.forName("Reflect.demo02.Cat");
        System.out.println(aClass1);

        //2.通过类名.class获取
        Class<Cat> aClass2 = Cat.class;
        System.out.println(aClass2);

        //3.通过对象实例.getClass()来获取
        Cat cat = new Cat();
        Class<? extends Cat> aClass3 = cat.getClass();
        System.out.println(aClass3);

        //4.通过类加载器获取
        //得到类加载器
        ClassLoader classLoader = Test04.class.getClassLoader();
        Class<?> aClass4 = classLoader.loadClass("Reflect.demo02.Cat");
        System.out.println(aClass4);

        //5.基本数据类型(int long short byte double float boolean char)可以通过.class来获取Class对象
        Class<Integer> integerClass = int.class;
        System.out.println(integerClass);

        //6.基本数据类型的包装类可以通过.TYPEl来获取
        Class<Integer> type = Integer.TYPE;
        System.out.println(type);

        System.out.println(integerClass==type);
    }
}
